package com.hirsi.common.db.log.entity;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import java.io.Serializable;
import java.time.LocalDateTime;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;

/**
 * <p>
 * 接口请求日志表
 * </p>
 *
 * @author 封夕
 * @since 2023-10-24
 */
@Getter
@Setter
@Accessors(chain = true)
@TableName("ztk_log_rest")
public class LogRest extends Model<LogRest> {

    private static final long serialVersionUID = 1L;

    /**
     * 主键id
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    /**
     * 请求地址
     */
    @TableField("url")
    private String url;

    /**
     * 接口描述
     */
    @TableField("description")
    private String description;

    /**
     * 接口类名方法名
     */
    @TableField("clazz")
    private String clazz;

    /**
     * 请求方式
     */
    @TableField("method")
    private String method;

    /**
     * 返回http状态码
     */
    @TableField("status")
    private Integer status;

    /**
     * 服务id：0-管理端，1-开发者端，2-开发者C端，3-客户端
     */
    @TableField("application_id")
    private Integer applicationId;

    /**
     * 设备
     */
    @TableField("device")
    private String device;

    /**
     * 操作系统
     */
    @TableField("os")
    private String os;

    /**
     * 浏览器
     */
    @TableField("browser")
    private String browser;

    /**
     * 平台：对应枚举
     */
    @TableField("platform")
    private Byte platform;

    /**
     * 返回自定义状态码
     */
    @TableField("code")
    private Integer code;

    /**
     * 请求参数
     */
    @TableField("param")
    private String param;

    /**
     * 请求body
     */
    @TableField("body")
    private String body;

    /**
     * 请求令牌
     */
    @TableField("token")
    private String token;

    /**
     * 错误信息
     */
    @TableField("error_msg")
    private String errorMsg;

    /**
     * 请求时长：ms
     */
    @TableField("times")
    private Integer times;

    /**
     * 请求的ip地址
     */
    @TableField("ip")
    private String ip;

    /**
     * 请求用户id，未登录就为空
     */
    @TableField("user_id")
    private Integer userId;

    /**
     * 请求时间
     */
    @TableField("request_time")
    private LocalDateTime requestTime;

    /**
     * 日志记录时间
     */
    @TableField(value = "create_time", fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    /**
     * 租户编码
     */
    @TableField("tenant_code")
    private String tenantCode;

    @Override
    public Serializable pkVal() {
        return this.id;
    }
}
